'Supply the name of the outline control you want to sort when calling 'this routine. There must be a list box on your form named 'Sorter' 'and it must have its Sort property set to 'True'. ' 'This routine will sort an outline control that has only one 'sub-level (That was all I needed.) but it can be modified to 'sort as many levels as are needed. If you do modify it to sort 'unlimited levels, please contribute the result to the MS BASIC 'forum ' Sub SortOutline (outline As Control) Dim X%, i%, Sep$ Sorter.Clear ' Clear the sorter list box Sep$ = outline.PathSeparator ' Save the existing path separator outline.PathSeparator = Chr(31) ' Set path separator to something below space (ASCII 32) For X% = 0 To outline.ListCount - 1 Sorter.AddItem outline.FullPath(X%) ' Add full path of items to list box Next X% outline.Clear ' clear outline control so sorted items can be added For X% = 0 To Sorter.ListCount - 1 i% = InStr(Sorter.List(X%), Chr(31)) ' If there is a seperator then add the second path item to the outline control If i% Then outline.AddItem Mid$(Sorter.List(X%), i% + 1) outline.PictureType(outline.ListCount - 1) = 2 ' make the picture a leaf Else ' If there is no seperator then this isa top level item outline.ListIndex = -1 ' Set listindex so AddItem will add a top level item outline.AddItem Sorter.List(X%) ' add the top level item outline.PictureType(outline.ListCount - 1) = 0 'set picture type to closed top level (PictureClosed) ' Set ListIndex to top level control so each new item added will be a sub item to it. outline.ListIndex = outline.ListCount - 1 End If Next outline.PathSeparator = Sep$ ' Restore previous path separator End Sub